package com.xiaoshuidi.cloud.module.member.service.securitycheckprogram;

import java.util.*;
import javax.validation.*;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaoshuidi.cloud.module.member.controller.admin.securitycheckprogram.vo.*;
import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.module.member.pojo.securitycheckprogram.SecurityCheckProgram;

/**
 * 安全检查项目 Service 接口
 *
 * @author hans.zhang
 */
public interface SecurityCheckProgramService extends IService<SecurityCheckProgram> {

    /**
     * 创建安全检查项目
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createSecurityCheckProgram(@Valid SecurityCheckProgramCreateReqVO createReqVO);

    /**
     * 更新安全检查项目
     *
     * @param updateReqVO 更新信息
     */
    void updateSecurityCheckProgram(@Valid SecurityCheckProgramUpdateReqVO updateReqVO);

    /**
     * 删除安全检查项目
     *
     * @param id 编号
     */
    void deleteSecurityCheckProgram(Long id);

    /**
     * 获得安全检查项目
     *
     * @param id 编号
     * @return 安全检查项目
     */
    SecurityCheckProgramRespVO getSecurityCheckProgram(Long id);

    /**
     * 获得安全检查项目列表
     * @return 安全检查项目列表
     */
    List<SecurityCheckProgram> getSecurityCheckProgramList(Boolean status);

    /**
     * 获得安全检查项目分页
     *
     * @param pageReqVO 分页查询
     * @return 安全检查项目分页
     */
    PageResult<SecurityCheckProgramRespVO> getSecurityCheckProgramPage(SecurityCheckProgramPageReqVO pageReqVO);

    /**
     * 获得安全检查项目列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 安全检查项目列表
     */
    List<SecurityCheckProgramRespVO> getSecurityCheckProgramList(SecurityCheckProgramExportReqVO exportReqVO);

    /**
     * 获取我的项目列表
     * @param loginUserId 当前登录用户
     * @return
     */
    List<GetMyProgramRespVO> getMyProgram(Long loginUserId);
}
